﻿/*
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at 
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
using System;
using java = biz.ritter.javapi;
using javax = biz.ritter.javapix;

namespace biz.ritter.javapix.xml.transform
{
    //Basties note: Come from com.springsource.org.apache.xmlcommons
    //  $Id: Result.java 446598 2006-09-15 12:55:40Z jeremias $

    /**
     * <p>An object that implements this interface contains the information
     * needed to build a transformation result tree.</p>
     * 
     * @author <a href="Jeff.Suttor@Sun.com">Jeff Suttor</a>
     */
    public interface Result
    {

        /**
         * Set the system identifier for this Result.
         *
         * <p>If the Result is not to be written to a file, the system identifier is optional.
         * The application may still want to provide one, however, for use in error messages
         * and warnings, or to resolve relative output identifiers.</p>
         *
         * @param systemId The system identifier as a URI string.
         */
        void setSystemId(String systemId);

        /**
         * Get the system identifier that was set with setSystemId.
         *
         * @return The system identifier that was set with setSystemId,
         * or null if setSystemId was not called.
         */
        String getSystemId();
    }

    public sealed class ResultConstants
    {
        /**
         * The name of the processing instruction that is sent if the
         * result tree disables output escaping.
         *
         * <p>Normally, result tree serialization escapes & and &lt; (and
         * possibly other characters) when outputting text nodes.
         * This ensures that the output is well-formed XML. However,
         * it is sometimes convenient to be able to produce output that is
         * almost, but not quite well-formed XML; for example,
         * the output may include ill-formed sections that will
         * be transformed into well-formed XML by a subsequent non-XML aware
         * process. If a processing instruction is sent with this name,
         * serialization should be output without any escaping. </p>
         *
         * <p>Result DOM trees may also have PI_DISABLE_OUTPUT_ESCAPING and
         * PI_ENABLE_OUTPUT_ESCAPING inserted into the tree.</p>
         *
         * @see <a href="http://www.w3.org/TR/xslt#disable-output-escaping">disable-output-escaping in XSLT Specification</a>
         */
        public const String PI_DISABLE_OUTPUT_ESCAPING =
            "javax.xml.transform.disable-output-escaping";

        /**
         * The name of the processing instruction that is sent
         * if the result tree enables output escaping at some point after having
         * received a PI_DISABLE_OUTPUT_ESCAPING processing instruction.
         *
         * @see <a href="http://www.w3.org/TR/xslt#disable-output-escaping">disable-output-escaping in XSLT Specification</a>
         */
        public const String PI_ENABLE_OUTPUT_ESCAPING =
            "javax.xml.transform.enable-output-escaping";
    }
}